Skip to content

feat(dbt): add ingest_dbt_manifest tool for Model/Source nodes and DEPENDS_ON lineage#583

Open
alexisperinger-ux wants to merge 3 commits into
DeusData:mainfrom
alexisperinger-ux:feat/dbt-manifest-ingest
Open

feat(dbt): add ingest_dbt_manifest tool for Model/Source nodes and DEPENDS_ON lineage#583
alexisperinger-ux wants to merge 3 commits into
DeusData:mainfrom
alexisperinger-ux:feat/dbt-manifest-ingest

Conversation

@alexisperinger-ux

@alexisperinger-ux alexisperinger-ux commented Jun 23, 2026

Copy link
Copy Markdown
Contributor

Summary

dbt computes a resolved dependency graph into target/manifest.json, but it was never ingested, so a project's model and source lineage stayed invisible to the index even though dbt had already calculated it. This adds an opt-in MCP tool ingest_dbt_manifest {project, manifest_path}:

  • model / seed / snapshot become Model / Seed / Snapshot nodes; source becomes a Source node, each keyed by dbt unique_id.
  • Each node's depends_on.nodes becomes a DEPENDS_ON edge (model-to-model and model-to-source).
  • test and analysis resources are skipped, so the graph keeps only lineage-bearing nodes.

It runs after index_repository against an existing store, so it augments rather than fabricates a graph, and is independent of index mode.

No schema change: reuses cbm_store_upsert_node / cbm_store_insert_edge and the existing DEPENDS_ON edge type.

Tests: tool_ingest_dbt_manifest_issue576 in tests/test_mcp.c, asserting 5 models + 2 sources + 5 DEPENDS_ON edges from a fixture manifest, with the test node skipped.

Fixes #576.

Related PRs

This is one of three PRs that split the SQL + dbt graph-indexing work to keep each under the one-issue-per-PR contributing rule. They share the same extraction and registry plumbing, so they are one logical change reviewed as a set:

  • #582: SQL DDL, first-class Table / View nodes + FROM/JOIN lineage (#574).
  • #584: dbt Jinja from raw .sql, Model / Macro nodes + ref() / source() lineage (#575).
  • #583 (this PR): dbt manifest ingestion, Model / Source nodes + DEPENDS_ON lineage (#576).

…PENDS_ON lineage

Signed-off-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com>
(cherry picked from commit e6a7493cb14306533f0a15f44b868e92145ca3e5)
Signed-off-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com>
Signed-off-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com>
(cherry picked from commit f96cc3966f30d135ef389d59c8ff16c59d656e0d)
Signed-off-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com>
Signed-off-by: alexisperinger-ux <alexis.peringer@iss-stoxx.com>
@alexisperinger-ux alexisperinger-ux force-pushed the feat/dbt-manifest-ingest branch from 40b3a35 to 1c00136 Compare June 24, 2026 06:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Ingest dbt manifest.json into Model/Source nodes + DEPENDS_ON lineage

1 participant